#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
//测试内容
// 
//int main()
//{
//	int* p = NULL;
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
//	int(*ptr)[10] = &arr;//数组指针ptr
//	//p = arr;
//	//p = &arr[0];
//	/*p = arr;*/
//	printf("%p\n", *ptr);
//	printf("%p\n", arr);
//	printf("%p\n", &arr);//打印结果都是一样的
//	return 0;
//}

//正文：

//写一个函数打印arr数组的内容，不使用数组下标，使用指针。
//arr是一个整形一维数组

//void print(int* p, int n)
//{
//	for (int i = 0; i < n; i++)
//	{
//		printf("%d ", *(p + i));
//	}
//}
//
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
//	int n = sizeof(arr) / sizeof(arr[0]);
//	print(arr, n);
//
//	return 0;
//}

//实现一个对整形数组的冒泡排序

//void bubble_sort(int arr[], int n)
//{
//	int i, j, num;
//	for (i = 0; i < n; i++)//对第i个数进行排列
//	{
//		for (j = 0; j < n - 1 - i; j++)//j<n-1-i是为了减少运算次数，因为第一次运行时，第一个元素已经和其他全部元素比较过了，所以比较次数可以慢慢减少
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				num = arr[j];//进行交换
//				arr[j] = arr[j + 1];
//				arr[j + 1] = num;
//			}
//		}
//	}
//}
//
void print(int* p, int n)
{
	for (int i = 0; i < n; i++)
	{
		printf("%d ", *(p + i));
	}
}
//
//int main()
//{
//	//输入一个长度为10的整形数组
//	int arr[10];
//	for (int i = 0; i < 10; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//
//	//进行冒泡排序
//	bubble_sort(arr,10);
//
//	print(arr, 10);
//	return 0;
//}



//题目：
//输入一个整数数组，实现一个函数，
//来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分，
//所有偶数位于数组的后半部分

void order(int arr[], int n)//n为数组的元素个数，运用冒泡排序的思路
{
	int j, i, num2;
	int num = 0;
	for (i = 0; i < n; i++)//计算出奇数的个数
	{
		if ((arr[i] % 2) == 1)
		{
			num++;
		}
	}
	for (i = 0; i < num; i++)//只用执行奇数个数次
	{
		for (j = 0; j < (n - 1 - i); j++)
		{
			if ((arr[j] % 2) == 0)
			{
				num2 = arr[j];//进行交换
				arr[j] = arr[j + 1];
				arr[j + 1] = num2;
			
			}
		}
	}
}


int main()
{
	//输入一个长度为10的整形数组
	int arr[10];
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &arr[i]);
	}
	order(arr, 10);
	print(arr, 10);
	return 0;
}
